package org.moore.utils;

import org.moore.controller.Application;

import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;

public class Countdown {
    // 定义定时器
    private static Timer timer;
    // 定义时间
    private static int seconds;
    // 定义剩余时间
    private static long remainingTime;
    // 定义计时器
    private static TimerTask task;

    public Countdown(int seconds) {
        Countdown.seconds = seconds;
        timer = new Timer();
    }

    // 启动定时器的方法
    public static void start() {
        remainingTime = seconds * 1000L; // 将剩余的时间转换为毫秒
        task = new RemindTask();
        timer.schedule(task, 0, 1000);
    }

    // 取消/暂停定时器的方法
    public static void pause() {
        task.cancel(); // 取消当前的计时器任务
        remainingTime -= (System.currentTimeMillis() - task.scheduledExecutionTime()); // 计算剩余的时间
    }

    // 继续定时器的方法
    public static void resume() {
        task = new RemindTask(); // 创建一个新的计时器任务
        timer.schedule(task, remainingTime, 1000); // 使用剩余的时间来重新安排计时器任务
        start(); // 启动定时器
    }

    // 运行定时器的方法
    static class RemindTask extends TimerTask {
        public void run() {
            if (seconds > 0) {
                seconds--;
            } else {
                // 创建一个新的字体对象
                Font newFont = new Font("宋体", Font.PLAIN, 18);
                // 设置所有的OptionPane字体
                UIManager.put("OptionPane.messageFont", newFont);
                UIManager.put("OptionPane.buttonFont", newFont);
                // 弹窗提示时间到
                JOptionPane.showMessageDialog(null, "时间到！游戏结束！");
                timer.cancel();// 终止计时器
                Application.nextLevel();
            }
        }
    }


    public static int getSeconds() {
        return seconds;
    }

    public static void setSeconds(int seconds) {
        Countdown.seconds = seconds;
    }
}